package org.example.basic.lambda.collectors;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * FlatMap 案例 (jdk 1.9 版本)
 * @deprecated
 *  map 和 FlatMapping 的区别
 *    map只是一维 1对1 的映射
 *    而flatmap可以将一个2维的集合映射成一个一维,相当于他映射的深度比map深了一层 ,
 *    所以名称上就把map加了个flat 叫flatmap
 * @see
 * @author songyafei
 */
public class FlatMapTest {
    public static void main(String[] args) {
        /**
         * 小程序理解
         *  map 和 flatmap
         */
        String[] words = new String[]{"Hello","World"};
        List<String[]> l = Arrays.stream(words)
                .map(word -> word.split(""))
                .distinct()
                .collect(Collectors.toList());
        l.forEach(System.out::println);
        System.out.println("---------------------------------------");
        List<String> lf = Arrays.stream(words).map(w -> w.split(""))
                .flatMap(Arrays::stream)
                .distinct()
                .collect(Collectors.toList());
        lf.forEach(System.out::println);
        //另外两种写法
        Stream.of(words).map(i-> i.split("")).flatMap(Stream::of).collect(Collectors.toList());
        Stream.of(words).flatMap(word->Stream.of(word.split(""))).collect(Collectors.toList());


    }
}
